#ifndef WEATHERWIDGET_H
#define WEATHERWIDGET_H

#include <QWidget>
#include <QNetworkAccessManager>
#include <QNetworkReply>
#include <QComboBox>
#include <QLabel>
#include <QGridLayout>
#include <QPushButton>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QMessageBox>
#include <QList>
#include <QMap>
#include <QGroupBox>

class WeatherWidget : public QWidget
{
    Q_OBJECT
public:
    explicit WeatherWidget(QWidget *parent = nullptr);

    void applyTechStyle();

    void paintEvent(QPaintEvent *event);

    void mousePressEvent(QMouseEvent *event);

    void mouseMoveEvent(QMouseEvent *event);

private slots:
    void fetchWeather();  // 获取天气数据
    void onReplyFinished(QNetworkReply *reply);  // 处理网络响应
    void onCityChanged(int index);  // 城市选择变化

private:
    void setupUI();  // 初始化界面
    void parseWeatherData(const QByteArray &data);  // 解析JSON数据
    void updateCurrentWeather(const QJsonObject &data);  // 更新当前天气
    void updateForecast(const QJsonArray &forecast);  // 更新天气预报

    // 天气API相关
    QNetworkAccessManager *manager;
    QString currentCityCode;
    QMap<QString, QString> cityMap;  // 城市名称

    // UI组件
    QGroupBox *currentWeatherBox;
    QGroupBox *forecastBox;
    QComboBox *cityComboBox;
    QPushButton *refreshButton;
    QLabel *cityLabel;
    QLabel *tempLabel;
    QLabel *weatherLabel;
    QLabel *humidityLabel;
    QLabel *windLabel;
    QLabel *dateLabel;
    QList<QLabel*> forecastDateLabels;
    QList<QLabel*> forecastTempLabels;
    QList<QLabel*> forecastWeatherLabels;
    QGridLayout *forecastLayout;

    // 添加窗口控制按钮
    QPushButton *minButton;   // 最小化按钮
    QPushButton *closeButton; // 关闭按钮
    QPoint m_dragPosition;    // 窗口拖动位置
};

#endif // WEATHERWIDGET_H
